1
Passer à la production : une approche centrée sur le déploiement
EvoClass-AI002Lecture 10
00:00

Passer à la production : une approche centrée sur le déploiement

Ce module final comble l'écart entre une recherche réussie — où nous avons obtenu une haute précision dans un bloc-notes — et une exécution fiable. Le déploiement est le processus essentiel qui transforme un modèle PyTorch en un service minimal, service autonome capable de fournir des prédictions de manière efficace aux utilisateurs finaux avec une faible latence et haute disponibilité.

1. Le changement d'approche pour la production

L'environnement exploratoire d'un bloc-notes Jupyter est étatique et fragile pour une utilisation en production. Nous devons restructurer notre code, passé d'une scripturaire exploratoire à des composants structurés et modulaires, adaptés aux requêtes simultanées, à l'optimisation des ressources et à une intégration transparente dans des systèmes plus larges.

Inférence à faible latence : Obtenir des temps de prédiction constamment inférieurs aux seuils cibles (par exemple, $50\text{ms}$), essentiel pour les applications en temps réel.
Haute disponibilité : Concevoir le service pour qu'il soit fiable, sans état, et capable de se remettre rapidement d'une panne.
Reproductibilité : Assurer que le modèle déployé et son environnement (dépendances, poids, configuration) correspondent exactement aux résultats de recherche validés.
Focus : Le service modèle
Plutôt que de déployer tout le script d'entraînement, nous déployons un wrapper de service minimal et autonome. Ce service doit uniquement gérer trois tâches : charger l'artefact du modèle optimisé, appliquer le prétraitement des entrées et exécuter le passage avant pour retourner la prédiction.
inference_service.py
TERMINALbash — uvicorn-service
> Ready. Click "Simulate Deployment Flow" to run.
>
ARTIFACT INSPECTOR Live

Simulate flow to view loaded production artifacts.
Question 1
Which feature of a Jupyter notebook makes it unsuitable for production deployment?
It primarily uses Python code
It is inherently stateful and resource-intensive
It cannot directly access the GPU
Question 2
What is the primary purpose of converting a PyTorch model to TorchScript or ONNX before deployment?
Optimization for faster C++ execution and reduced Python dependency
To prevent model theft or reverse engineering
To automatically handle input data preprocessing
Question 3
When designing a production API, when should the model weights be loaded?
Once, when the service initializes
At the start of every prediction request
When the first request to the service is received
Challenge: Defining the Minimal Service
Plan the structural requirements for a low-latency service.
You need to deploy a complex image classification model ($1\text{GB}$) that requires specialized image preprocessing. It must handle $50$ requests per second.
Step 1
To ensure high throughput and low average latency, what is the single most critical structural change needed for the Python script?
Solution:
Refactor the codebase into isolated modules (Preprocessing, Model Definition, Inference Runner) and ensure the entire process is packaged for containerization.
Step 2
What is the minimum necessary "artifact" to ship, besides the trained weights?
Solution:
The exact code/class definition used for preprocessing and the model architecture definition, serialized and coupled with the weights.